#ifndef TOPMENUBAR_H
#define TOPMENUBAR_H

#include <QWidget>
#include <QHBoxLayout>
#include <QPushButton>
#include <QLabel>
#include <QTimer>

class TopMenuBar : public QWidget
{
    Q_OBJECT

public:
    explicit TopMenuBar(QWidget *parent = nullptr);
    ~TopMenuBar();

    // 提供接口用于外部获取当前激活的标签
    QString getCurrentMode() const;
    
    // 设置当前模式
    // 参数: mode - 要设置的模式名称
    void setCurrentMode(const QString &mode);

    // 设置当前时间显示
    // 参数: time - 要显示的时间字符串
    void setCurrentTime(const QString &time);
    
    // 设置登录状态
    // 参数: loggedIn - 登录状态（true表示已登录，false表示未登录）
    void setLoginStatus(bool loggedIn);
    
    // 获取登录状态
    // 返回值: true表示已登录，false表示未登录
    bool isLogged() const;

private:
    QPushButton *btnVideoMonitor;
    QPushButton *btnPlayback;
    QPushButton *btnElectronicMap;
    QPushButton *btnLogQuery;
    QPushButton *btnSystemSettings;
    QPushButton *btnLogin;           // 登录/注销按钮
    QLabel *timeLabel;
    QTimer *timer;

    QHBoxLayout *layout;
    
    QString currentMode;
    bool loggedIn;                   // 登录状态

private slots:
    // 视频监控按钮被点击
    void onVideoMonitorClicked();

    // 视频回放按钮被点击
    void onPlaybackClicked();

    // 电子地图按钮被点击
    void onElectronicMapClicked();

    // 日志查询按钮被点击
    void onLogQueryClicked();

    // 系统设置按钮被点击
    void onSystemSettingsClicked();
    
    // 登录按钮被点击
    void onLoginClicked();

    // 更新时间显示
    void updateTime();

signals:
    // 发出信号通知主窗口切换到对应模式
    // 参数: mode - 模式名称（字符串）
    void modeChanged(const QString &mode);
    
    // 登录请求信号
    void loginRequested();
    
    // 注销请求信号
    void logoutRequested();
};

#endif // TOPMENUBAR_H
